package com.eastfair.venueservice.service;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.eastfair.boot.request.PageParams;
import com.eastfair.boot.service.SuperService;
import com.eastfair.venueservice.dto.ExhibitionCompanyDTO;
import com.eastfair.venueservice.entity.ExhibitionCompany;
import com.eastfair.venueservice.vo.ExhibitionCompanyVO;
import com.eastfair.venueservice.vo.ServiceProviderVO;

import java.util.List;

/**
 * <p>
 * 业务接口
 * 展会相关企业
 * </p>
 *
 * @author dq
 * @date 2022-09-28
 */
public interface ExhibitionCompanyService extends SuperService<ExhibitionCompany> {

    /**
     * 分页查询展会企业VO.
     *
     * @param pageParams the page params
     * @return the page
     */
    Page<ExhibitionCompanyVO> listExhibitionCompanyVOs(PageParams<ExhibitionCompanyDTO> pageParams);

    /**
     * 分页查询展会企业.
     *
     * @param pageParams the page params
     * @return the page
     */
    Page<ExhibitionCompany> listExhibitionCompany(PageParams<ExhibitionCompanyDTO> pageParams);

    /**
     * 查询展会企业列表.
     *
     * @param exhibitionCompanyDTO the exhibition company dto
     * @return the list
     */
    List<ExhibitionCompany> listExhibitionCompany(ExhibitionCompanyDTO exhibitionCompanyDTO);

    /**
     * 服务商ID，展会ID查询展会企业.
     *
     * @param serviceProviderIds the service provider ids
     * @param exhibitionManageId the exhibition manage id
     * @return the list
     */
    List<ExhibitionCompany> listByServiceProviderIds(List<Long> serviceProviderIds, Long exhibitionManageId);

    /**
     * ID获取展会企业详情.
     *
     * @param id the id
     * @return the exhibition company vo by id
     */
    ExhibitionCompanyVO getExhibitionCompanyVOById(Long id);

    /**
     * 服务商ID查询展会企业VO.
     *
     * @param serviceProviderId the service provider id
     * @param exhibitionMangeId the exhibition mange id
     * @return the vo by service provider id
     */
    ExhibitionCompanyVO getVOByServiceProviderId(Long serviceProviderId, Long exhibitionMangeId);

    /**
     * 服务商ID查询展会企业VO.
     *
     * @param serviceProviderId the service provider id
     * @param exhibitionMangeId the exhibition mange id
     * @return the by service provider id
     */
    ExhibitionCompany getByServiceProviderId(Long serviceProviderId, Long exhibitionMangeId);

    /**
     * 展会ID，联系人手机号查询主办企业
     *
     * @param phone              the phone
     * @param exhibitionManageId the exhibition manage id
     * @return the sponsor by phone
     */
    ExhibitionCompany getSponsorByPhone(String phone, Long exhibitionManageId);

    /**
     * 保存展会企业.
     *
     * @param exhibitionCompanyDTO the exhibition company dto
     * @return the boolean
     */
    boolean saveExhibitionCompany(ExhibitionCompanyDTO exhibitionCompanyDTO);

    /**
     * 批量保存.
     *
     * @param list the list
     * @return the boolean
     */
    boolean saveBatchExhibitionCompany(List<ExhibitionCompanyDTO> list);

    /**
     * 展会服务商列表批量保存展会企业.
     *
     * @param list               the list
     * @param exhibitionManageId the exhibition manage id
     * @return the boolean
     */
    boolean saveBatchByHomeOrMainTransport(List<ServiceProviderVO> list, Long exhibitionManageId);

    /**
     * 更新展会企业.
     *
     * @param exhibitionCompanyDTO the exhibition company dto
     * @return the boolean
     */
    boolean updateExhibitionCompany(ExhibitionCompanyDTO exhibitionCompanyDTO);

    /**
     * ID删除展会企业.
     *
     * @param ids the ids
     * @return the boolean
     */
    boolean removeExhibitionCompanyById(Long ids);

    /**
     * 服务商ID，展会ID移除展会企业.
     *
     * @param serviceProviderIds  服务商ID
     * @param exhibitionManageId 展会ID
     * @return the boolean
     */
    boolean removeByServiceProviderId(List<Long> serviceProviderIds, Long exhibitionManageId);
}
